54a817d4 |
1 | <?xml version="1.0" encoding="utf-8" ?> |
2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
3 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
4 | <html xmlns="http://www.w3.org/1999/xhtml"> |
5 | <head> |
6 | <title>Site Software</title> |
7 | <meta name="generator" content="muse.el" /> |
8 | <meta http-equiv="Content-Type" |
9 | content="text/html; charset=utf-8" /> |
10 | <link href="http://feeds.unknownlamer.org/rss/site-updates" |
11 | rel="alternate" type="application/rss+xml" title="Updates Feed" /> |
12 | |
7404d4e1 |
13 | <link rel="stylesheet" href="default.css" /> |
54a817d4 |
14 | </head> |
15 | <body> |
16 | <h1>Site Software</h1> |
17 | <div class="contents"> |
18 | <dl> |
19 | <dt> |
20 | <a href="#sec1">Basic Setup</a> |
21 | </dt> |
22 | <dt> |
23 | <a href="#sec2">Scripts</a> |
24 | </dt> |
25 | <dd> |
26 | <dl> |
27 | <dt> |
28 | <a href="#sec3">Book Database</a> |
29 | </dt> |
30 | <dt> |
31 | <a href="#sec4">RSS Feed</a> |
32 | </dt> |
33 | </dl> |
34 | </dd> |
35 | <dt> |
36 | <a href="#sec5">License</a> |
37 | </dt> |
38 | </dl> |
39 | </div> |
40 | |
41 | |
42 | <!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a> |
43 | Basic Setup</h2> |
44 | |
45 | <p class="first">I work on the static content of the site using <a href="http://mwolson.org/projects/EmacsMuse.html">Emacs Muse</a>. My muse |
46 | configuration is pretty long and available in my |
47 | <a href="http://unknownlamer.org/darcsweb/browse?r=site-emacs;a=headblob;f=/init.d/muse.el">site-emacs repository</a>. The site itself exists in a <a href="http://unknownlamer.org/darcsweb/browse?r=unknownlamer.org;a=summary">darcs repository</a> |
48 | which is a fork of the source repository I edit locally—the source |
49 | repository contains muse/image files while the site repository |
50 | contains html updates as a separate series of patches.</p> |
51 | |
52 | <p>This provides a very nice editing environment and makes publishing |
53 | fairly easy—I push edits from my laptop to my workstation and then |
54 | off to <a href="http://hcoop.net">HCoop</a> with the html updates. Almost no effort is spent dealing |
55 | with some dumb web interface or other pointless things making it much |
56 | easier for me to just write things and toss them up onto the web.</p> |
57 | |
58 | |
59 | <h2><a name="sec2" id="sec2"></a> |
60 | Scripts</h2> |
61 | |
62 | <p class="first">There are a few scripts and templates in the <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=summary">darcsweb::site-support</a> |
63 | repository that I use to update the |
64 | site. <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/update.sh">darcsweb::site-support/update.sh</a> automates the process of |
65 | sending patches off to the server via afs.</p> |
66 | |
67 | <h3><a name="sec3" id="sec3"></a> |
68 | Book Database</h3> |
69 | |
70 | <p><a href="Book%20List.html">Book List</a> is autogenerated by <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/books.lisp">darcsweb::site-support/books.lisp</a> which |
71 | reads a template and a small sexp <em>database</em> of book entries and spits |
72 | out a muse file which is not kept under VC. This works well for me |
73 | currently, but I intend to eventually <em>upgrade</em> this simple system to an |
74 | <a href="http://common-lisp.net/project/elephant/">Elephant</a> object database with a <a href="http://common-lisp.net/project/mcclim/">CLIM</a> frontend for editing |
75 | entries. I'll probably end up writing a minimal database manager for |
76 | the sexp based system first.</p> |
77 | |
78 | |
79 | <h3><a name="sec4" id="sec4"></a> |
80 | RSS Feed</h3> |
81 | |
82 | <p class="first">The site rss feed is generated by <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/rss.lisp">darcsweb::site-support/rss.lisp</a>. It |
83 | fetches the darcs xml changelog for interesting files and then spits |
84 | out a tolerable feed with automagically generated links from <code>*.muse</code> to |
85 | <code>*.html</code>. A <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/update-rss-binary">dumped binary</a> is run from a darcs hook on the main |
86 | repository that handily updates the feed whenever I commit.</p> |
87 | |
88 | <p><code>apply posthook update-site-rss |
89 | apply run-posthook</code></p> |
90 | |
91 | <p>Boring old Apache is used to serve up the generated feed. The feed |
92 | stays updated when I update, and Apache deals with properly letting |
93 | readers know when the file last changed and whatnot.</p> |
94 | |
95 | |
96 | |
97 | <h2><a name="sec5" id="sec5"></a> |
98 | License</h2> |
99 | |
100 | <p class="first">All of the scripts used to generate the site are in the public domain |
101 | unless otherwise mentioned in the files themselves. To use them |
102 | anywhere else would require modification, but a few chunks of code |
103 | could be generally useful for other things.</p> |
104 | |
105 | |
106 | <!-- Page published by Emacs Muse ends here --> |
107 | |
108 | <p class="cke-buttons"> |
109 | <!-- validating badges, any browser, etc --> |
110 | <a href="http://validator.w3.org/check/referer"><img |
111 | src="http://www.w3.org/Icons/valid-xhtml10" |
112 | alt="Valid XHTML 1.0!" /></a> |
113 | |
114 | <a href="http://www.anybrowser.org/campaign/"><img |
115 | src="img/buttons/w3c_ab.png" alt="[ Viewable With Any Browser |
116 | ]" /></a> |
117 | |
118 | <a href="http://www.debian.org/"><img |
119 | src="img/buttons/debian.png" alt="[ Powered by Debian ]" /></a> |
120 | |
121 | <a href="http://hcoop.net/"> |
122 | <img src="img/buttons/hcoop.png" |
123 | alt="[ Hosted by HCoop]" /> |
124 | </a> |
125 | |
126 | <a href="http://www.fsf.org/register_form?referrer=114"> |
127 | <img src="img/buttons/fsf_member.png" |
128 | alt="[ FSF Associate Member ]" /> |
129 | </a> |
130 | </p> |
131 | |
7404d4e1 |
132 | <p class="cke-footer"> It's no contest, but we still race there |
133 | Like the saintly tortoise and the godless hare |
54a817d4 |
134 | </p> |
135 | <p class="cke-timestamp">Last Modified: |
136 | September 28, 2008</p> |
137 | </body> |
138 | </html> |